home *** CD-ROM | disk | FTP | other *** search
/ Just Call Me Internet / Just Call Me Internet.iso / prog / atari / m2 / cat3src / magic / d / mttermin.d < prev    next >
Text File  |  1997-10-26  |  9KB  |  227 lines

  1. (*----------------------------------------------------------------------*
  2.  *                                                                      *
  3.  *  MAGICTOOLS   Modula's  All purpose  GEM  Interface  Cadre  Toolbox  *
  4.  *               ÿ         ÿ            ÿ    ÿ          ÿ               *
  5.  *----------------------------------------------------------------------*
  6.  * Version 3.30  02.02.1992     (C)90/91/92 by Peter Hellinger Software *
  7.  *----------------------------------------------------------------------*
  8.  *            Dieses Modul ist urheberrechtlich geschtzt.              *
  9.  *                                                                      *
  10.  * Die Ver”ffentlichung des Quelltextes oder Teilen daraus, sowie die   *
  11.  * Verbreitung des bersetzten, nicht gelinkten Codes in schriftlicher, *
  12.  * oder maschinenlesbarer Form, insbesondere in Zeitschriften, Mail-    *
  13.  * boxen oder anderen Medien bedarf der ausdrcklichen schriftlichen    *
  14.  * Einverst„ndnisserkl„rung des Autors.                                 *
  15.  *                                                                      *
  16.  * Die Verbreitung des Moduls als Teil eines gelinkten Programms ist    *
  17.  * fr Lizenznehmer ausdrcklich erlaubt!  Der Autor beh„lt sich das    *
  18.  * Recht vor, diese Erlaubnis jederzeit und ohne Angaben von Grnden zu *
  19.  * widerrufen.                                                          *
  20.  *----------------------------------------------------------------------*)
  21.  
  22. (*----------------------------------------------------------------------*
  23.  * mtTerminal   Terminal  VT52-Treiber, der in einem vom Benutzer zu    *
  24.  *              bestimmenden Bildschirmausschnitt (Fenster!) l„uft.     *
  25.  *----------------------------------------------------------------------*)
  26.  
  27. DEFINITION MODULE mtTerminal;
  28.  
  29. FROM MagicSys   IMPORT  Nil, Null, Bit0, Bit1, Bit2, Bit3, Bit4, Bit5, Bit6,
  30.                         Bit7, Bit8, Bit9, Bit10, Bit11, Bit12, Bit13, Bit14,
  31.                         Bit15, LOC, Byte, ByteSet, sWORD, sINTEGER, sCARDINAL,
  32.                         sBITSET, lINTEGER, lCARDINAL, lWORD, lBITSET;
  33.  
  34.  
  35.  
  36.  
  37.  
  38. (* Das folgende Set entspricht dem Attributset von 1stWord *)
  39.  
  40. TYPE    Attribute =     (fat,           (* Fettschrift                  *)
  41.                          light,         (* helle Schrift                *)
  42.                          italic,        (* kursive Schrift              *)
  43.                          underline,     (* unterstrichen                *)
  44.                          superscript,   (* hochgestellte Schrift        *)
  45.                          subscript,     (* tiefgestellte Schrift        *)
  46.                          invers,        (* inverse Schrift              *)
  47.                          offsetflag);   (* Fll-Flag                    *)
  48.         Attribut =      SET OF Attribute;
  49.  
  50.  
  51. TYPE    TERMINAL;       (* Terminal-Typ, opaque *)
  52.  
  53.  
  54. (*--------------------------------------------------------------------------*
  55.  *     Auf die folgenden Variablen sollte nur LESEND zugegriffen werden!    *
  56.  *--------------------------------------------------------------------------*)
  57.  
  58. VAR     Terminal:       TERMINAL; (* Aktuelles Terminal                     *)
  59.         Lines:          sINTEGER; (* Anzahl Zeilen des aktuellen Terminals  *)
  60.         Columns:        sINTEGER; (* Anzahl Spalten des aktuellen Terminals *)
  61.         Xpos:           sINTEGER; (* X-Pixelpos des aktuellen Terminals     *)
  62.         Ypos:           sINTEGER; (* Y-Pixelpos des aktuellen Terminals     *)
  63.         Width:          sINTEGER; (* Breite des Terminals in Pixel          *)
  64.         Height:         sINTEGER; (* H”he des Terminals in Pixel            *)
  65.         CurrWidth:      sINTEGER; (* Breite eines Font-Zeichens             *)
  66.         CurrHeight:     sINTEGER; (* H”he eines Font-Zeichens               *)
  67.         Font:           sINTEGER; (* aktueller Zeichensatz                  *)
  68.  
  69. VAR     TextHandle:     sINTEGER; (* Workstation ber die TEXT ausgegeben 
  70.                                    * wird. Bildschirm l”schen etc. erfolgt
  71.                                    * ber andere Workstations!
  72.                                    *)
  73.  
  74. (*--------------------------------------------------------------------------* 
  75.  * Die Ausgabe der folgenden Prozeduren erfolgt immer ins aktuelle Terminal * 
  76.  *--------------------------------------------------------------------------*)
  77.  
  78. PROCEDURE WriteChar (c: CHAR);
  79. (* Schreibt Zeichen *)
  80.  
  81.  PROCEDURE WriteLine (REF  s: ARRAY OF CHAR); 
  82.  
  83. (* schnelle Stringausgabe, kein LF *)
  84.  
  85. PROCEDURE WriteConst (REF  s: ARRAY OF CHAR);
  86. (* Stringausgabe fr konstante Strings *)
  87.  
  88. PROCEDURE WriteLn;
  89. (* CR + LF *)
  90.  
  91. PROCEDURE WriteCard     (wert: sCARDINAL; len: sCARDINAL);
  92. PROCEDURE WriteInt      (wert: sINTEGER;  len: sCARDINAL);
  93. PROCEDURE WriteLongCard (wert: lCARDINAL; len: sCARDINAL);
  94. PROCEDURE WriteLongInt  (wert: lINTEGER;  len: sCARDINAL);
  95. PROCEDURE WriteReal     (wert: REAL;      len: sCARDINAL);
  96. PROCEDURE WriteLongReal (wert: LONGREAL;  len: sCARDINAL);
  97. (* Schreibt die entspechenden Werte mit L„nge len *)
  98.  
  99. PROCEDURE WriteFixReal  (wert: REAL;      len, fix: sCARDINAL);
  100. PROCEDURE WriteFixLReal (wert: LONGREAL;  len, fix: sCARDINAL);
  101. (* Schreibt die entspechenden Werte mit L„nge len und fix Nachkommastellen *)
  102.  
  103. PROCEDURE InsertLine;
  104. (* Fgt Leerzeile bei aktueller Cursorposition ein. Alle Zeilen unterhalb
  105.  * werden nach unten verschoben. Die unterste Zeile geht verloren.
  106.  *)
  107.  
  108. PROCEDURE DeleteLine;
  109. (* L”scht Zeile an aktueller Cursorposition. Alle Zeilen unterhalb
  110.  * werden nach oben verschoben. Die unterste Zeile wird leer.
  111.  *)
  112.  
  113. PROCEDURE WhereXY (VAR x, y: sCARDINAL);
  114. (* Ermittelt Cursorposition *)
  115.  
  116. PROCEDURE GotoXY (x, y: sCARDINAL);
  117. (* Setzt Cursor auf Spalte/Zeile.  Die HOME-Position ist 0,0 *)
  118.  
  119. (* Hinweis fr WhereXY und GotoXY: 
  120.  * ------------------------------- 
  121.  * Diese Prozeduren arbeiten nur korrekt, wenn im Terminal ausschliežlich
  122.  * EIN Font verwendet wurde, der zudem noch MONOSPACED sein muž. Fr den
  123.  * Systemfont ist dies gegeben.
  124.  *
  125.  * Werden FSM-Fonts oder proportionale Bitmap-Fonts verwendet, ist eine
  126.  * Spalten/Zeilen-Weise Positionsberechnung nicht m”glich. Bei Einsatz
  127.  * solcher Fonts sollten die Prozeduren WhereCursor und SetCursor benutzt
  128.  * werden.
  129.  *)
  130.  
  131. PROCEDURE WhereCursor (VAR x, y: sINTEGER);
  132. (* Ermittelt Cursorposition in Rasterkoordinaten *)
  133.  
  134. PROCEDURE SetCursor (x, y: sINTEGER);
  135. (* Setzt Cursorposition in Rasterkoordinaten *)
  136.  
  137. PROCEDURE CursorOn;
  138. PROCEDURE CursorOff;
  139. (* Cursorhandling *)
  140.  
  141. PROCEDURE CursorStop;
  142. (* Stoppt blinkenden Cursor. Wird ggw. nicht untersttzt! *)
  143.  
  144. PROCEDURE CursorBlink;
  145. (* L„žt Cursor blinken.  Wird ggw. nicht untersttzt! *)
  146.  
  147. (* Hinweis:
  148.  * --------
  149.  * Cursorhandling wird gegenw„rtig nur bei monospaced Fonts untersttzt.
  150.  *)
  151.  
  152. PROCEDURE WrapOff;
  153. PROCEDURE WrapOn;
  154. (* Umbruch am Zeilenende. WrapOff ist Default *)
  155.  
  156. PROCEDURE ClearLine;
  157. (* L”scht aktuelle Zeile *)
  158.  
  159. PROCEDURE ClearStartOfLine;
  160. (* L”scht zum Zeilenanfang *)
  161.  
  162. PROCEDURE ClearEndOfLine;
  163. (* L”scht zum Zeilenende *)
  164.  
  165. PROCEDURE ClearScreen;
  166. (* L”scht Bildschirm *)
  167.  
  168. PROCEDURE ClearStartOfScreen;
  169. (* L”scht zum Anfang des Bildschirms *)
  170.  
  171. PROCEDURE ClearEndOfScreen;
  172. (* L”scht zum Ende des Bildschirms *)
  173.  
  174. PROCEDURE ForegroundColor (color: sINTEGER);
  175. PROCEDURE BackgroundColor (color: sINTEGER);
  176. (* Setzt die Farben des Terminals *)
  177.  
  178. PROCEDURE InversOn;
  179. PROCEDURE InversOff;
  180. (* Invers ein und wieder aus *)
  181.  
  182. PROCEDURE SetAttribut (attrib: Attribut);
  183. (* Setzt die Textattribute des Terminals *)
  184.  
  185. PROCEDURE SetTabspace (tab: sINTEGER);
  186. (* Setzt die Breite des Tab-Sprungs, Default = 8 *)
  187.  
  188. (*--------------------------------------------------------------------------*
  189.  *                      Support fr mehrere Terminals                       *
  190.  *--------------------------------------------------------------------------*)
  191.  
  192. PROCEDURE OpenTerminal (rect: ARRAY OF LOC): TERMINAL;
  193. (* ™ffnet ein Terminal an Pos rect.x, rect.y und Breite/H”he rect.w, rect.h.
  194.  *)
  195.  
  196. PROCEDURE CloseTerminal (VAR term: TERMINAL);
  197. (* Schliežt das Terminal. *)
  198.  
  199. PROCEDURE ChangeTerminal (term: TERMINAL): TERMINAL;
  200. (* Wechselt das Terminal. Returniert das bisherige aktuelle Terminal *)
  201.  
  202. PROCEDURE UpdateTerminal;
  203. (* Bringt die Parameter des aktuellen Terminals auf die neuesten Werte. MUSS
  204.  * nach jedem Ver„ndern des Fonts (Gr”že, Id) aufgerufen werden, da sonst das
  205.  * Terminal keine Information ber die ge„nderten Daten erh„lt!
  206.  *)
  207.  
  208. PROCEDURE GetTerminal (VAR rect: ARRAY OF LOC);
  209. (* Liefert Gr”že des aktuellen Terminals *)
  210.  
  211. PROCEDURE SetTerminal (rect: ARRAY OF LOC);
  212. (* Setzt Gr”že und Position des aktuellen Terminals.
  213.  * Breite und H”he (w/h) in PIXEL
  214.  *)
  215.  
  216. PROCEDURE GetMaximum (VAR rect: ARRAY OF LOC);
  217. (* Liefert gr”žtm”gliche Fl„che des Terminals *)
  218.  
  219. PROCEDURE RedrawTerminal (term: TERMINAL; rect: ARRAY OF LOC);
  220. (* not yet implemented *)
  221.  
  222. PROCEDURE ClipRect (doit: BOOLEAN; rect: ARRAY OF LOC);
  223. (* Clipping. *)
  224.  
  225. END mtTerminal.
  226.  
  227.